
#define YC ConfigComponent
#define VP(arg) v.push_back( c##arg )
void configure ( YC c0 ){ std::vector< YC > v; VP(0);configSubsystem(v); }
void configure ( YC c0, YC c1 ){ std::vector< YC > v; VP(0);VP(1);configSubsystem(v); }
void configure ( YC c0, YC c1, YC c2 ){ std::vector< YC > v; VP(0);VP(1);VP(2);configSubsystem(v); }
void configure ( YC c0, YC c1, YC c2, YC c3 ){ std::vector< YC > v; VP(0);VP(1);VP(2);VP(3);configSubsystem(v); }
void configure ( YC c0, YC c1, YC c2, YC c3, YC c4 ){ std::vector< YC > v; VP(0);VP(1);VP(2);VP(3);VP(4);configSubsystem(v); }
void configure ( YC c0, YC c1, YC c2, YC c3, YC c4, YC c5 ){ std::vector< YC > v; VP(0);VP(1);VP(2);VP(3);VP(4);VP(5);configSubsystem(v); }
void configure ( YC c0, YC c1, YC c2, YC c3, YC c4, YC c5, YC c6 ){ std::vector< YC > v; VP(0);VP(1);VP(2);VP(3);VP(4);VP(5);VP(6);configSubsystem(v); }
void configure ( YC c0, YC c1, YC c2, YC c3, YC c4, YC c5, YC c6, YC c7 ){ std::vector< YC > v; VP(0);VP(1);VP(2);VP(3);VP(4);VP(5);VP(6);VP(7);configSubsystem(v); }
void configure ( YC c0, YC c1, YC c2, YC c3, YC c4, YC c5, YC c6, YC c7, YC c8 ){ std::vector< YC > v; VP(0);VP(1);VP(2);VP(3);VP(4);VP(5);VP(6);VP(7);VP(8);configSubsystem(v); }
void configure ( YC c0, YC c1, YC c2, YC c3, YC c4, YC c5, YC c6, YC c7, YC c8, YC c9 ){ std::vector< YC > v; VP(0);VP(1);VP(2);VP(3);VP(4);VP(5);VP(6);VP(7);VP(8);VP(9);configSubsystem(v); }
void configure ( YC c0, YC c1, YC c2, YC c3, YC c4, YC c5, YC c6, YC c7, YC c8, YC c9, YC c10 ){ std::vector< YC > v; VP(0);VP(1);VP(2);VP(3);VP(4);VP(5);VP(6);VP(7);VP(8);VP(9);VP(10);configSubsystem(v); }
#undef VP
#undef YC

#define handled(...) cv.erase( cv.begin() + i );--i __VA_ARGS__
#define C(arg,...) ConfigComponent( #arg , __VA_ARGS__ )
